import java.util.ArrayList;
import java.util.Scanner;

//Fibonacci数列
public class test1 {
    public static void main(String[] args) {
        //输入
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();

        //调用斐波那契数列,然后判断 n 在哪两个数之间 然后判断离哪个数更近
        int fi1 = n- getResult1(n);//这个数比n小
        int fi2 = getResult2(n)-n;//这个数比n大
        if(fi1<fi2){
            System.out.println(fi1);
        }else{
            System.out.println(fi2);
        }

    }
    public static int getResult1(int n){
        //返回比n小的斐波那契数
        ArrayList<Integer> fi = new ArrayList<>();
        for (int i = 0; ; i++) {
            if(i==0){
                fi.add(0);
            } else if (i==1) {
                fi.add(1);
            }else{
                fi.add(fi.get(i-2)+ fi.get(i-1));
            }
            if(fi.get(fi.size()-1)>n){
                //一旦比n大,就退出,最后返回前一个
                break;
            }
        }
        return fi.get(fi.size()-2);
    }

    public static int getResult2(int n){
        //返回比n大的斐波那契数
        ArrayList<Integer> fi = new ArrayList<>();
        for (int i = 0; ; i++) {
            if(i==0){
                fi.add(0);
            } else if (i==1) {
                fi.add(1);
            }else{
                fi.add(fi.get(i-2)+ fi.get(i-1));
            }
            if(fi.get(fi.size()-1)>n&&fi.get(fi.size()-2)<n){
                break;
            }
        }
        return fi.get(fi.size()-1);
    }
}
